package it.univaq.disim.mwt.business.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import it.univaq.disim.mwt.business.RegistriPersonaliProfessoriService;
import it.univaq.disim.mwt.business.model.Alunno;
import it.univaq.disim.mwt.business.model.Classe;
import it.univaq.disim.mwt.business.model.Insegnante;
import it.univaq.disim.mwt.business.model.Materia;
import it.univaq.disim.mwt.business.model.RegistroDiClasse;
import it.univaq.disim.mwt.business.model.RegistroPersonale;

public class JDBCRegistroPersonaleService implements RegistriPersonaliProfessoriService{

	//FUNZIONA
	@Override
	public RegistroPersonale findRegistroPersonaleById(Long id) {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		String sql = "select * from registri_personali_professori where id = ? ";
		RegistroPersonale registriPersonale = null;
		
		try {
		
			connection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "school", "school");
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.setLong(1, id);
			preparedStatement.executeQuery();	
			resultSet = preparedStatement.getResultSet();
			resultSet.next();
			
			Long ide = resultSet.getLong("id");
			Long idInsegnanti = resultSet.getLong("id_insegnante");
			JDBCInsegnanteService jdbcInsegnanteService = new JDBCInsegnanteService();
			Insegnante insegnanti = jdbcInsegnanteService.findInsegnanteById(idInsegnanti);
			
			registriPersonale = new RegistroPersonale(ide,insegnanti);
			
			resultSet.close();
			preparedStatement.close();
			connection.close();
			
			return registriPersonale ;

		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		return null;
	}
	
	//FUNZIONA
	@Override
	public List<RegistroPersonale> findAllRegistriPersonale() {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		List<RegistroPersonale> listRegistriPersonali = new ArrayList<RegistroPersonale>();
		String sql = " select * from registri_personali_professori ";
		RegistroPersonale registriPersonale = null;
		
		try {
		
			connection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "school", "school");
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.executeQuery();	
			resultSet = preparedStatement.getResultSet();
			
			while(resultSet.next()){
			
				Long ide = resultSet.getLong("id");
				Long idInsegnanti = resultSet.getLong("id_insegnante");
				JDBCInsegnanteService jdbcInsegnanteService = new JDBCInsegnanteService();
				Insegnante insegnanti = jdbcInsegnanteService.findInsegnanteById(idInsegnanti);
				
				registriPersonale = new RegistroPersonale(ide,insegnanti);
				
				listRegistriPersonali.add(registriPersonale);
			}

			resultSet.close();
			preparedStatement.close();
			connection.close();
		
			return listRegistriPersonali;
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}

		return null;
	}

}